package org.elanfox.intellicommunity.common.utils;

import io.netty.buffer.ByteBufUtil;

import java.nio.charset.StandardCharsets;

/**
 * @author allan
 * @version 1.0.0
 * @date 2020/2/20
 */
public class HexUtils {
    /**
     * 使用1字节就可以表示b
     *
     * @param b
     * @return
     */
    public static String numToHex8(Number b) {
        return String.format("%02x", b);//2表示需要两个16进行数
    }

    /**
     * 需要使用2字节表示b
     *
     * @param b
     * @return
     */
    public static String numToHex16(Number b) {
        return String.format("%04x", b);
    }

    /**
     * 需要使用4字节表示b
     *
     * @param b
     * @return
     */
    public static String numToHex32(Number b) {
        return String.format("%08x", b);
    }

    /**
     * String转hex
     *
     * @param str
     * @return
     */
    public static String stringToHex(String str) {
        return ByteBufUtil.hexDump(str.getBytes(StandardCharsets.UTF_8));
    }

    public static String ipToHex(String ip) {
        String[] ipArray = ip.split("\\.");
        StringBuilder ipBuilder = new StringBuilder();
        for (String s : ipArray) {
            ipBuilder.append(numToHex8(Integer.parseInt(s)));
        }

        return ipBuilder.toString();
    }
}
